package com.JavaBasic;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class ListDemo {
	public static void main(String[] args) {
		// 创建List
		List<String> list1 = new ArrayList<String>();
		list1.add("a");
		list1.add("b");
		list1.add("c");
		list1.add("d");
		System.out.println("list1=" + list1);
		
		// 在指定索引出添加元素
		list1.add(1, "z");
		System.out.println("‘在1索引出添加z后，list1=" + list1);
		
		// 指定新集合
		List<String> list2 = new ArrayList<String>();
		list2.add("e");
		list2.add("f");
		list2.add("g");
		System.out.println("list2=" + list2);
		
		// 把一个集合添加到另一个集合指定位置
		list1.addAll(3, list2);
		System.out.println("在list1的3索引出添加list2以后，list1=" + list1);
		
		// 获取集合指定索引的元素
		String string = list1.get(2);
		System.out.println("获取到list1集合2索引处的元素:" + string);
		
		// 获取元素在集合中的索引
		int index = list1.indexOf("e");
		System.out.println("e在list1中的索引值是:" + index);
		// 从后面找指定元素的索引
		index = list1.lastIndexOf("e");
		
		// 删除指定索引处的元素,返回被删除的元素
		String deleteStr = list1.remove(1);
		System.out.println("删除list1集合1位置的元素:" + deleteStr);
		System.out.println("list1=" + list1);
		
		// 删除指定元素,只删除第一个匹配到的元素
		boolean success = list1.remove("c");
		System.out.println("删除list1集合中的c元素成功:" + success);
		System.out.println("list1=" + list1);
		
		// 修改指定索引的元素
		list1.set(3, "x");
		System.out.println("修改list1集合3索引处的元素为x,list1=" + list1);
		
		// 截取子集合(包头不包尾)
		List<String> newList = list1.subList(2, 4);
		System.out.println("截取list1结合2~4元素获取的新集合:" + newList);
		
		// List专有迭代器遍历
		// 正序遍历
		ListIterator<String> iterator = list1.listIterator();
		System.out.println("正序遍历list1：");
		while (iterator.hasNext()) {
			String string2 = (String) iterator.next();
			System.out.println(string2);
		}
		
		// 倒序遍历(必须要先正序遍历，把指针移到尾部，否则遍历不出内容)
		System.out.println("倒序遍历list1：");
		while (iterator.hasPrevious()) {
			String string3 = iterator.previous();
			System.out.println(string3);
		}
	}
}
